package si.yun.service;

import si.yun.entity.SyCarousel;
import si.yun.entity.SyPaySuccessInfo;
import si.yun.entity.SyUserOrder;
import si.yun.entity.SyUserOrderUsed;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @program: ThinkManage
 * @description: 首页
 * @author: 崔晓晨
 * @create: 2021-10-15 09:27
 **/
public interface HomeService {
    //查询主页轮播图
    List<SyCarousel> selCarouselInfo();
    //查找视频详情
    List<Map<String,Object>> selCourseInfo();
    //获取课程的详细信息
    Map<String,Object> selCourseInformation(Integer courseId);
    //判断某一用户是否已经点赞
    Integer selIfLikeNum(Integer userId,Integer courseId);
    //点赞视频
    Integer addLikeCourseNum(Integer userId,Integer courseId);
    //取消视频点赞
    Integer delCourseLikeNum(Integer userId,Integer courseId);
    //判断用户是否收藏视频
    Integer selColCourseIF(Integer userId,Integer courseId);
    //收藏视频
    Integer addColCourseInfo(Integer userId,Integer courseId);
    //取消收藏
    Integer delColCourseInfo(Integer userId,Integer courseId);
    //判断该用户是否分享过该视频
    Integer selShareInfoIf(Integer userId,Integer courseId);
    //插入分享数据
    Integer addCourseShare(Integer userId,Integer courseId,Integer shareType);
    //获取当前课程下的相关目录
    List<Map<String,Object>> selCourseClassInfo(Integer courseId);
    //获取课程下的评论
    List<Map<String,Object>> selCourseComments(Integer courseId,Integer userId);
    //点赞评论
    Integer addCommentLike(Integer commentId,Integer userId,Integer courseId);
    //取消评论
    Integer delCommentLike(Integer commentId,Integer userId,Integer courseId);
    //获取课程下的评论总数
    Integer selCommentCountNum(Integer courseId);
    //添加留言
    Integer addCommentInfo(Integer userId, Integer courseId, String content);
    //删除个人评论 更改状态为删除
    Integer updCommentStatusDel(Integer commentId,Integer userId,Integer courseId);
    //优惠券使用查询
    List<Map<String,Object>> selCouponUserInfo(Integer userId,Integer productType,Integer courseNprice);
    //获取个人拥有的不能使用的优惠券
    List<Map<String, Object>> selAllCouponInfo(Integer userId, Integer productType,Integer courseNprice);
    //添加购物订单
    Integer addCourseOrder(SyUserOrderUsed userOrder);
    //付款成功后更改订单状态
    Integer updCourseOrderStatus(SyPaySuccessInfo map);
    //免费付款成功后更改订单状态
    Integer updCourseFreeOrderStatus(SyPaySuccessInfo map);
    //取消订单
    Integer updOrderStatus(Integer orderId,String remarks);
    //获取未付款的订单
    List<Map<String,Object>> selWaitPayOrderInfo ();
    //判断该用户是否拥有指定视频的播放资格
    Map<String,Object> getPlayQualifications(Integer userId,Integer productId);
    //更新用户消费金额
    Integer updUserConsumption(Integer userId, BigDecimal totalAmount);
    //更新课程的销量
    Integer updcourseOrderNum(Integer courseId);
    // 分享课程数量+1
    Integer addCourseSharing(Integer id);
    //查看教师的详细信息
    Map<String,Object> selTeaInfo(Integer userId,Integer type);
    //查询指定人物的课程
    List<Map<String,Object>> selCourseUserInfo(Integer userId,Integer type);
    //添加商品订单时候，添加商品的收货地址
    Map<String,Object> selPrUserAddress(Integer userId);
}
